﻿using System;
using System.Collections;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BusinessRules;
using Common;

public partial class admin_MasterPage : System.Web.UI.MasterPage
{
    private DataTable objDataTableMenu;
    protected void Page_Load(object sender, EventArgs e)
    {
        //object obj = Menu1.DataSource;
        //DataTable obj2 = (DataTable) obj;
        if (!IsPostBack)
        {
            lblUsuario.Text = "Bienvenido: " + Usuario.Nombre;
            cargarMenu();
            Session["perfilActual"] = Usuario.PerfilActual;

        }

    }


    #region buscarPadres
    private void buscarPadres(DataTable objDataTable, string strParent)
    {
        bool bandera = true;
        foreach (DataRow obj in objDataTable.Rows)
        {
            if (obj["SSM_ID"].ToString() == strParent)
            {
                //verifica que si el SSM_ID existe no lo agrega nuevamente

                foreach (DataRow objExiste in objDataTableMenu.Rows)
                {
                    if (bandera)
                    {
                        bandera = objExiste["SSM_ID"].ToString() != obj["SSM_ID"].ToString();
                    }
                }


                DataRow newRow = objDataTableMenu.NewRow();
                newRow["SSM_ID"] = obj["SSM_ID"];
                newRow["Description"] = obj["Description"];
                newRow["Url"] = obj["Url"];
                newRow["Parent"] = obj["Parent"];
                if (!string.IsNullOrEmpty(obj["ICL_ICONO"].ToString()))
                    newRow["ICL_ICONO"] = obj["ICL_ICONO"].ToString();


                //si se activo la bandera es por que ya se agrego

                if (bandera)
                {
                    objDataTableMenu.Rows.Add(newRow);
                    //funcion para llamar y agregar los padres de ese item
                    if (!string.IsNullOrEmpty(obj["Parent"].ToString()))
                        buscarPadres(objDataTable, obj["Parent"].ToString());
                    //arreglo.Add(obj["Parent"]);
                }

            }
        }


    }
    #endregion

    #region cargarMenu
    private void cargarMenu()
    {
        Opciones objIndicadores = new Opciones(ConfigurationManager.AppSettings["Conn"]);
        DataTable objDataTable = objIndicadores.ConsultarMenuPerfil(Convert.ToInt32(Usuario.PerfilActual));

        objDataTableMenu = CreateDataTable();



        ArrayList arreglo = new ArrayList();


        //Funcion recursiva
        foreach (DataRow obj in objDataTable.Rows)
        {
            if (Convert.ToBoolean(obj["HABILITADO"]))
            {
                DataRow newRow = objDataTableMenu.NewRow();

                newRow["SSM_ID"] = obj["SSM_ID"];
                newRow["Description"] = obj["Description"];
                newRow["Url"] = obj["Url"];
                if (!string.IsNullOrEmpty(obj["ICL_ICONO"].ToString()))
                    newRow["ICL_ICONO"] = obj["ICL_ICONO"].ToString();
                newRow["Parent"] = obj["Parent"];

                objDataTableMenu.Rows.Add(newRow);
                //funcion para llamar y agregar los padres de ese item
                buscarPadres(objDataTable, obj["Parent"].ToString());
                //arreglo.Add(obj["Parent"]);
            }
        }


        foreach (DataRow obj in objDataTableMenu.Rows)
        {



            if (string.IsNullOrEmpty(obj["Parent"].ToString()))
            {
                MenuItem mnuMenuItem = new MenuItem();
                mnuMenuItem.Value = obj["SSM_ID"].ToString();
                mnuMenuItem.Text = obj["Description"].ToString();
                if (!string.IsNullOrEmpty(obj["ICL_ICONO"].ToString()))
                    mnuMenuItem.ImageUrl = obj["ICL_ICONO"].ToString();
                mnuMenuItem.NavigateUrl = obj["Url"].ToString();

                //-----------------------------//
                //  agregamos el Ítem al menú  //
                //-----------------------------//
                Menu1.Items.Add(mnuMenuItem);

                //-------------------------------------------------------------------------------//
                //hacemos un llamado al metodo recursivo encargado de generar el árbol del menú  //
                //-------------------------------------------------------------------------------//

                AddMenuItem(ref mnuMenuItem, objDataTableMenu);
            }
        }


    }
    #endregion

    #region CreateDataTable
    private DataTable CreateDataTable()
    {
        DataTable myDataTable = new DataTable();

        DataColumn myDataColumn;

        myDataColumn = new DataColumn();
        myDataColumn.DataType = Type.GetType("System.String");
        myDataColumn.ColumnName = "SSM_ID";
        myDataTable.Columns.Add(myDataColumn);

        myDataColumn = new DataColumn();
        myDataColumn.DataType = Type.GetType("System.String");
        myDataColumn.ColumnName = "Description";
        myDataTable.Columns.Add(myDataColumn);


        myDataColumn = new DataColumn();
        myDataColumn.DataType = Type.GetType("System.String");
        myDataColumn.ColumnName = "ICL_ICONO";
        myDataTable.Columns.Add(myDataColumn);


        myDataColumn = new DataColumn();
        myDataColumn.DataType = Type.GetType("System.String");
        myDataColumn.ColumnName = "Url";
        myDataTable.Columns.Add(myDataColumn);

        myDataColumn = new DataColumn();
        myDataColumn.DataType = Type.GetType("System.String");
        myDataColumn.ColumnName = "Parent";
        myDataTable.Columns.Add(myDataColumn);

        return myDataTable;
    }
    #endregion

    #region AddMenuItem

    private void AddMenuItem(ref MenuItem mnuMenuItem, DataTable objDataTable)
    {
        //-----------------------------------------------------------------------------//
        //recorremos cada elemento del datatable para poder determinar cuales          //
        //son elementos hijos del menuitem dado pasado como parametro ByRef.           //
        //-----------------------------------------------------------------------------//

        foreach (DataRow obj in objDataTable.Rows)
        {
            if (obj["Parent"].ToString() == mnuMenuItem.Value && (!obj["SSM_ID"].Equals(obj["Parent"])))
            {
                MenuItem mnuNewMenuItem = new MenuItem();
                mnuNewMenuItem.Value = obj["SSM_ID"].ToString();
                mnuNewMenuItem.Text = obj["Description"].ToString();
                //mnuNewMenuItem.ImageUrl = obj["ICL_ICONO"].ToString();
                mnuNewMenuItem.NavigateUrl = obj["Url"].ToString();

                //--------------------------------------------------------------------------//
                //  Agregamos el Nuevo MenuItem al MenuItem que viene de un nivel superior  //
                //--------------------------------------------------------------------------//
                mnuMenuItem.ChildItems.Add(mnuNewMenuItem);

                //-------------------------------------------------------------------------------//
                // llamada recursiva para ver si el nuevo menú ítem aun tiene elementos hijos.   //
                //-------------------------------------------------------------------------------//
                AddMenuItem(ref mnuNewMenuItem, objDataTable);
            }
        }

    }

    #endregion

    #region Usuario
    public objUsuario Usuario
    {
        get
        {
            objUsuario tObjUsuario = new objUsuario();
            if (Session[Utilidad._SESSION_USUARIO] != null)
            {
                tObjUsuario = (objUsuario)Session[Utilidad._SESSION_USUARIO];
            }
            return tObjUsuario;
        }
        set
        {
            Session[Utilidad._SESSION_USUARIO] = value;
        }
    }
    #endregion

    #region btncambiarClave_Click
    [Anthem.Method]
    protected void btncambiarClave_Click(object sender, ImageClickEventArgs e)
    {
        string strScript = @"<script language=""javascript""> Abrir();</script>";
        Anthem.Manager.RegisterPageScriptBlock("Abrir", strScript);

    }
    #endregion
    
}
